perm filename SCU[P,JRA] blob sn#445054 filedate 1979-05-30 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00005 00003
C00015 00004
C00018 00005
C00022 ENDMK
CāŠ—;

Outline of General Philosophy

Both educational and industrial computer  software projects suffer from  a
common malady:  inadequately  prepared programming  staffs.  This  results
from a  general misconception  concerning the  difficulty of  programming;
frequently one hears statements expressing the sentiment that "anyone  can
program."  Of course that  opinion is as accurate  as "anyone can write  a
poem."  Our argument  therefore involves  a perspective  on improving  the
quality of  programming and  the programming  process, rather  than a  new
approach to the mechanics of learning the syntax of a particular language.
The former  is an  important facet  of a  university education  in  modern
computer science; the latter is not.

In a  field  with  growth  as  rapid as  that  of  computer  technology  a
university must be prepared  to educate students  in fundamental ideas  as
well as expose them to current technology; otherwise their education  will
be obsolete  even before  they graduate.  This is  well-understood in  the
hardware field; this area has a substantial background to draw from in the
physical sciences. However, the situation is not so well developed in  the
software domain. There  is no historical  precedent for handling  problems
with the  complexity  of  modern computer  systems.   Current  efforts  in
"programming methodology" represent initial attempts to come to grips with
these  problems.   Unfortunately  many  of  the  approaches  involve  only
syntactic or superficial solutions, restricting the expressibility of  the
programming  languages  (and   therefore  the   programmer)  rather   than
addressing the problem  as a semantic  one requiring an  education in  the
ways of thinking about  complexity coupled with  a collection of  computer
tools that expands the programmer's expressibility.



What a University Computing Facility Should Represent

A university  program that  involves technology  must be  a model  of  how
things should be  done, not necessarily  how things are  done. Alas,  most
computing centers fail this  miserably.  As a  result, students are  still
trained to think and  act about computing in  fashions which were  current
twenty years ago --batch processing, card input, paper output.  This is  a
major difficulty. The complexity and expectations of software products has
increased phenomenally; unfortunately, the way we deal with computers  has
changed very slightly.  We may use a "glass teletype" to prepare the input
and receive the output, but the general paradigm still holds.  Until  very
recently, such behavior could be  excused on financial grounds; only  very
few research establishments  could afford to  develop and support  quality
tools, and only then  for a select number  of individuals. Technology  has
changed that;  even  contemporary eight-bit  microprocessors  can  support
reasonably robust programming  environments.  That  is the  lesson in  the
success of personal computing  and BASIC.  An  "inelegant" language in  an
attractive package has done wonders in de-mystifing computers.

The university role  in computing  can take several  further lessons  from
this experience. It is the quality  of the tools which make the  computing
environment either friendly  or hostile. Most  computing environments  are
quite  hostile;  this  makes  for  slow,  unsatisfactory  development;  it
constrains the programming process to  the point that creativity  suffers.
That is hardly an atmosphere in which we should expect to develop our best
software people. Therefore the center should be exemplar in the quality of
the general programming environment.  This includes programming tools such
as general purpose display editors  that allow text manipulation  superior
to that available  with hardcopy.  Such  editors have been  in common  use
since 1965 at the Stanford  Artificial Intelligence Laboratory; their  use
has spread  through  the  AI  community.   What  is  new  is  that  recent
technology has made this display  philosophy economically viable. What  is
needed is  the realization  that  such tools  exist  and can  improve  the
programming process.   A  diversity  of  projects  at  Xerox's  Palo  Alto
Research Center support this  contention.  There, the  use of these  tools
has  been  expanded  into  all  branches  of  computer  related  endeavor:
education  of  primary-  and  secondary-school  children,  development  of
personalized integrated circuit design  systems, sophisticated video  word
processing systems, automated  office systems (currently  being tested  in
the White  House and  Congress); even  the traditional  areas of  computer
science, like programming  language design,  have blossomed  in this  rich
setting. The  "personal  computing" phenomenon  is  a testimonial  to  the
attractiveness of interactive access to computing systems.

Of course these tools are only one  facet of the future in computing.   In
the past  computers have  been but  a humble,  generally sparse  commodity
which performed mentally menial tasks of data processing.  In the  future,
computers will perform a more active role, as competent assistants in both
everyday life and specialized disciplines; they will be able to understand
natural  language,   analyze   complex   situations,   suggest   solutions
--generally be able to  enhance and extend one's  mental span much in  the
way that mechanical  devices extend  our physical  world.  The  university
community must be a leader in  the intelligent application of such  tools;
not only the  technical development,  but the societal,  legal, and  moral
consequences of  a  computer-intensive  society must  be  scrutinized  and
understood.

Since I am not an expert in the non-technical ramifications of  computing,
I will confine my  remarks to those aspects  of computer science  programs
which I do understand and which must be addressed in a modern treatment of
the subject.  In particular a computing center must be more than a passive
resource that campus projects  draw upon like a  cafeteria.  It should  be
responsible (both to the community  and the university) for assuring  that
the facilities  represent the  best available  tools.  The  center  should
develop  and  support  a  programming  environment  which  reinforces  the
methodological concepts which aid in creating, modifying, and  maintaining
large complex software projects.  As  these new tools become available  it
is even  more important  that their  users be  well-educated and  trained.
These  "computer  professionals"  will   be  developing  the   intelligent
computing systems which will be used by the majority of society;  clearly,
these individuals  must be  instilled  with a  high technical  and  social
conscience. The current muddle in software development is a direct  result
of inadequate  training  in  the complexities  of  software  ("anyone  can
program"), coupled  with  an inadequacy  in  the availablity  of  software
development tools (how many computing centers still use punched cards?).

Therefore the university role must be to expose the students to this "high
technology software",  while giving  them the  intellectual education  and
training to apply  it wisely. It  is this area  which is most  overlooked:
high quality tools cannot be used effectively by untrained individuals.  A
programming methodology  which develops  a sense  of maturity  within  the
individual is an integral part of the program.

Given the  pervasive future  of  computing devices,  I see  the  computing
facility at the hub of a university. It must supply resources to technical
and non-technical clients; it must actively participate in the development
of computer-related curricula, moving research results into the mainstream
of campus  computing.   Therefore  it  must  actively  involved  with  the
university faculties,  the local  computing  industries, and  the  general
community to develop an intelligent humanistic program.

Conclusions

Santa Clara University is in an enviable  position. It is in the heart  of
the most  technologically advanced  part  of the  world.  This  valley  is
well-known for  its hardware  expertise;  its software,  and that  of  the
industry in general, is  a wasteland.  The  industry does understand  that
current software practices  are inadequate, but  for several reasons  have
not been  able  to develop  a  comprehensive  solution.  The  need  for  a
forward-looking  program  is  therefore  recognized.   The  program  would
attract both personnel and resources  from the Valley, making a  technical
contribution to  both  participants.  At  the  same  time,  the  technical
excellence of the  program would serve  to make Santa  Clara a strong  and
credible voice which could influence the future uses of computers.

In this brief  outline I have  discussed a general  philosophical view  of
computing and university  education.  I  have not delved  into a  detailed
plan that  would  support  such  a  venture.   If  there  is  interest  in
discussing details  I  would  be  quite pleased  to  describe  a  concrete
proposal.  You may contact me at the addresses below.

				Sincerely yours,

				John R. Allen
				18215 Bayview Dr.
				Los Gatos, Ca 95930
				(408)353-2227

				Signetics Corp.
				811 E. Arques Ave. MS.38
				Sunnyvale, Ca 94086
				(408)739-7700 x6304

Roger:

I am sorry to be so impatient  about our arrangements, but time IS of  the
essence.  If I cannot feel  that I can complete  this project in a  timely
and professional fashion,  I will  drop it; a  date for  that decision  is
close at hand.

Following are some general questions  and points which should be  resolved
before we are to sign an agreement: (the order is totally random)

1. I assume that we will incur no liabilities due to a customer's use  (or
misuse) of the product. Our responsibilities are restricted to producing a
quality product and fixing any bugs which occur.

2. Will the name  of our partnership be  associated with the software  you
release?

3. Will the money be made available at the time the agreement is signed?

4. How soon after the signing will the machines be available?

5. Will  the  necessary software  be  included with  the  machines?   (for
example:   assembler,  C,  word  processor,  trace  package,  and  editors
(teco-like and display-oriented)?

6. Do  you have  a  conversion program  which  will take  Intel  formatted
floppies to your format?

7. Is there an extra RS-232 port available on the machines; if not, can we
get one included?  Similar question about a PROM burner.

8. What are  the dimensions  of the new  dazzler?  If  the dimensions  are
around 264x480 it could be quite useful (for both parties)

9. What kind of  assistance can we  get on the  production of the  manual?
Proof reading? copy-editing?

10. We must have some agreement about the maintenance of the hardware.  If
something malfunctions before  the software  delivery date,  we must  have
timely repair or replacement. Similarly some decisions must be made  about
hardware maintenance during our period of software maintenance.

One final question: what is your assessment of the LISP market? i.e.,  how
many copies do you expect to sell?  Probably other questions will come up,
but hopefully this list will cut down some of the iterations. The prospect
of developing  a small,  quality  LISP system  is exciting;  however  that
excitement is dampened as the end of September gets closer. A bad LISP is
worse than no LISP.